package com.my.blog.website.service;

import com.github.pagehelper.PageInfo;
import com.my.blog.website.dto.DingDto;
import com.my.blog.website.modal.Vo.DingVo;
import com.my.blog.website.modal.Vo.DingVoExample;
import com.my.blog.website.utils.Node;

import java.util.List;


/**
 * @author geng
 * @title: IDingSevice
 * @projectName my-blog
 * @description: TODO
 * @date 2020/1/10 -- 14:34
 */
public interface IDingSevice {

    /**
     * 获得所有打卡的条数
     */
    int countDings();

    /**
     * 发布打卡
     *
     * @param contents
     */
    void publish(DingVo contents);

    /**
     * 查询文章返回多条数据
     *
     * @param p     当前页
     * @param limit 每页条数
     * @return ContentVo
     */
    PageInfo<DingVo> getDings(Integer p, Integer limit);

    /**
     * 查找用户的打卡
     *
     * @param p
     * @param
     * @return
     */
    PageInfo<DingDto> getDingsByUser(Integer authorId, String orderBy, Integer p, Integer limit);


    /**
     * 根据id或slug获取文章
     *
     * @param id id
     * @return ContentVo
     */
    DingVo getDings(String id);

    List<DingDto> findNameAndDing();

    /**
     * 根据主键更新
     *
     * @param dingVo contentVo
     */
    void updateDingByDid(DingVo dingVo);


    /**
     * 查询分类/标签下的文章归档
     *
     * @param mid   mid
     * @param page  page
     * @param limit limit
     * @return ContentVo
     */
    PageInfo<DingVo> getDings(Integer mid, int page, int limit);

    /**
     * 搜索、分页
     *
     * @param keyword keyword
     * @param page    page
     * @param limit   limit
     * @return ContentVo
     */
    PageInfo<DingVo> getDings(String keyword, Integer page, Integer limit);


    /**
     * @param dingVoExample
     * @param page
     * @param limit
     * @return
     */
    PageInfo<DingVo> getDingsWithpage(DingVoExample dingVoExample, Integer page, Integer limit);


    PageInfo<DingDto> getDingsPage(String orderby, Integer page, Integer limit);

    PageInfo<DingDto> getDingsPageById(Integer uid, String orderby, Integer page, Integer limit);

    /**
     * 根据文章id删除
     *
     * @param cid
     */
    void deleteByCid(Integer cid);

    /**
     * 编辑文章
     *
     * @param contents
     */
    void updateDing(DingVo contents);


}
